CGI和FastCGI

概念

CGI全称是common gateway interface, 说明它是一个网关接口, 是一种协议, 没有具体实现. 和java的JDBC是一个意思.

FastCGI全称是fast common gateway interface, 它也是一个网关接口, 只是在CGI接口上做了一层封装.

但是CGI协议并没有考虑到性能问题, 实现了CGI协议的程序在执行完任务后就会销毁进程, 当有新的任务时, 又要重新启动进程.

FastCGI协议考虑到了性能问题, 实现了FastCGI协议的程序, 会先启动一个master进程作为管理员, 然后启动多个worker进程(相当于CGI)作为任务执行者. 并且这些worker进程的管理类似于线程池.

伪代码

interface CGI{
  createWorkderThenParsePhpFile();
}


interface FastCGI{
  createMasterToManageWorkers();
  createWorkderThenParsePhpFile();
}

通过上面的伪代码可以发现, FastCGI只是在CGI接口上面做了一层封装(编程就是套娃的过程), 写了一个管理方法createMasterToManageWorkers.

php-cgi和php-fpm

php-cgiphp-fpm是对CGIFastCGI的实现, 它们两个都是应用程序.

在最开始只有php-cgi, 并且实现了CGIFastCGI两种协议, 但是那个写代码的人水平不够高, 所以内部执行效率低下.

后来出现一个高手写了php-fpm应用程序, 用来实现两种协议, 这个应用程序效率很高, 被php官方盯上了, 把php-fpm收入自己腰包.(最开始php-fpm是外部插件, 现在已经内部集成).

总结

CGIFastCGI都是协议, 是一种规范. php-cgiphp-fpm都是实现了规范的程序, 其中php-fpm代码质量高, 执行效率好.

参考资料

PHP中CGI、CLI、FPM是什么 搞不清FastCgi与PHP-fpm之间是个什么样的关系 php-cli和php-fpm的关系是什么? php-cgi是php脚本的解析器吗?

THE END
推荐文章
  • node获取文件编码,然后自动解码

  • 修改mysql密码

  • 谷歌浏览器(Chrome)如何关闭弹出通知

  • mysql安全防护

  • 微信公众号开发(4)-微信公众号回复模板

  • js数据结构-队列

  • 通过禁用浏览器的javascript,来破解网站debug反爬虫措施

  • windows安装redis并设置服务

评论 共0条
文本

名字

0字

链接

链接名称

https://example.com example.com

即将访问外部链接,请注意确认目标地址的安全性

下载

名字

安全提示

本站资源均来自网络收集,下载前请注意文件安全

文件资源

文件名称

文件描述

智能体

名字

0字

输出结果

0字

工具

工具

加载中...
开启精彩搜索

热门搜索

暂无

历史搜索

用户名/邮箱/手机号
密码
用户名
密码
重复密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
注册
找回密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

0字

0字

2024年10月

0字

0字

新增

0字

0字

新增

0字

0字